#pragma once

#include <bexpl_csr.h>
#include <bofcl_csr.h>

// 打开独立外部中断功能，并设置外部中断入口地址，要求该地址的低2位全为0。
static inline void csr_set_exti_entry(prcdr_ft irq_entry_f) {
	u32_s irq_entry_addr = (u32_s)irq_entry_f;
	csr_mtvt2_s mtvt2 = {
		.COMMON_CODE_ENTRY = irq_entry_addr >> 2,
		.MTVT2EN = 1,
	};
	csr_wreg_mtvt2(mtvt2);
}

// 打开独立外部中断功能，并设置外部中断入口为已定义的入口。
static inline void csr_set_default_exti_entry(void) {
	// 已定义的外部中断入口
	__attribute__((interrupt, aligned(4))) prcdr_ft irqentry_exti;
	csr_set_exti_entry(irqentry_exti);
}
